函数

//函数的两个阶段
//1.函数的定义
// 声明式:js会将函数式声明的函数,提升至一等公民,优先级是最高的,所以可以在函数声明的语句之前对函数进行调用
//语法:首先使用function 函数名 对函数进行声明
//function 函数名(参数) {....js逻辑}
// function log() {
//     console.log('第一次使用,好紧张啊')
// }
//表达式(赋值式):不能提升函数的优先级,不能在声明函数之前的语句里调用函数
//通过var关键字,声明一个变量来储存一个函数,变量名就是函数名
// var log = function () { 
//     console.log('好紧张啊')
// }

//2.函数的调用
//语法:用函数名加上括号对函数进行调用
//函数可以调用多次,达到复用逻辑的效果  

//不传实参的情况下,函数的形参的值是undefined

//如果一个函数没有返回值,那么它的值就是undefined

//return关键字后面的代码,都不会执行 一般会使用这个特点来中断函数的逻辑

预解析

//js属于动态语法 一边编译 一边执行 

//预解析:就是js代码执行之前,对代码进行解释

//预解析两件事
//1.预解析函数式声明的函数 会直接将函数体里面所有的逻辑直接给声明的变量!!!!!
// log() '原来我是奶茶哦~~QAQ'
// var log = '今天天气好晴朗,处处好风光'
// var num = 1000
// // log() log() log is not a function
// function log() {
//     console.log('原来我是奶茶哦~~QAQ')
// }
// log() log() log is not a function

//代码执行步骤是这样的

// 1. var log = function(){
//     console.log('原来我是奶茶哦~~QAQ')
// }

// 2.找var关键字

// var log;
// var num;

//3.赋值操作 代码从上到下开始执行
// log = '今天天气好晴朗,处处好风光'
// num = 1000

//4.执行 log() log is not a function

//2.预解析 var 先找页面上所有的var 将变量声明提升 
//如果var 重复声明了同一个变量,那么自动会忽略掉第二个var?????
// var a = 1;
// var a;
// console.log(a);//1

// var a;
// a = 1;
// //  var a  忽略
// console.log(a);//1
//如果没有使用var声明变量 那么将不具备变量提升

// console.log(name2); //undefined
// var name1 = '嘎子'
// var name1 = '嘎子1'
// var name2 = '郑爽'

//执行顺序

//1.var name1 = undefined;
// var name2 = undefined;
//2.console.log(name2) //undefined

//3.  name1 = '嘎子';
//name2 = '郑爽'

作用域

//作用域的访问规则,作用域链
//作用域链:函数外部拿不到函数内部var声明过的变量,函数内部可以访问函数外部声明的变量,如果函数中的变量没有声明,那么会先访问父级函数中的变量,如果父级函数也没有使用var声明,那么会继续往上层函数访问,如果上级函数都没有声明变量,那么就会访问到window全局作用域

递归

//递归 就是在当前函数内部调用自己的形式 称之为递归   
//1.需要一个初始值 2.需要一个条件 3.初始值需要发生变化

//递归的作用:像循环一样,用于重复性的去执行一些逻辑

//应用:'树形'数据的处理 对象树形的深拷贝

//在递归过程中,一个非常重要的条件就是 递归的时候要有条件去控制 不然就是死递归

//递归的两个必要因素：

//递归方程，递归结束条件。

//算法核心：

// 在有限次可预见性结果中，找到结果与上一次结果之间的关系。
// f(n)与f(n-1)的关系有时候很简单，如同走楼梯，状态单一；又有时如同细胞分裂，多种状态组合影响结果。
// 关键在于梳理清楚本次结果和上一次结果的关系有哪些方面或是因素。
// 在草稿纸上写出前几次的结果，或者画图，这样更容易找到规律，这种规律实际上就是递归方程。
// 在算法的分析中，当一个算法中包含递归调用时，其时间复杂度的分析会转化成为一个递归方程的求解




